/**创建页面视图 */
class View {
	/**
	 * 创建一个View
	 * @param {Object} options 
	 * @param {String} options.name 视图名称（必填）
	 * @param {Function} options.init_page 页面初始化方法（选填）
	 */
	constructor(options) {
		this.plugins = {};
		this._default = {
			add_info_type: 'dialog',
			edit_info_type: 'dialog'
		};
		this.options = $.extend({}, options);
		viewMap[this.options.name] = this;
	}
	/**
	 * view init
	 */
	init() {
		this.events();
		this.type = u.getParam('type') || '';
		this.itemId = u.getParam('itemId') || '';
		if (this.plugins) {
			for (let key in this.plugins) {
				let plugin = this.plugins[key];
				if (!plugin.options) plugin.options = {};
				if (!(plugin.delay === true || plugin.options.delay === true)) {
					plugin.init(this);
				}
			}
		}
		if (this.options.init_page) {
			this.options.init_page.apply(this);
		}
	}
	/**
	 * 加载插件
	 * @param {Object} plugin 
	 */
	use(plugin) {
		if (!plugin.options) plugin.options = {};
		if (!plugin.options.name) {
			let index = wdUtil.getMapLength(this.plugins) + 1;
			plugin.options.name = "plugin-" + index
			// console.warn('此插件没有name属性');
		}
		if (this.plugins[plugin.options.name]) {
			console.warn('此插件已存在，此次操作将会之前的同名插件')
		}
		plugin.view = this;
		this.plugins[plugin.options.name] = plugin;
		return this
	}
	/**
	 * editDialog
	 * @param {Object} options 
	 */
	editDialog(options) {
		let self = this;
		let url = '/' + this.options.name + '/html/' + this.options.name + "_add?memberId=123";
		$.get(url, function (result) {
			//console.log(result)
			//弹出dialog  填充数据
			options = $.extend({}, options, {
				"result": result,
				"name": self.name,
				"type": 'edit'
			});
			let dialog = new Dialog(options);
		});
	}
	/**
	 * addDialog
	 * @param {Object} options 
	 */
	addDialog(options) {
		options.dialogType = "add_dialog"
		let _dailog = new Dialog(options);
		_dailog.show();
	}

	/**
	 * events
	 */
	events() {
		let self = this;
		this.container = $('#' + this.options.name + '_container');
		if (this.container.length == 0) {
			alertify.error('请声明' + this.options.name + '_container');
			return false;
		}

		// if (this.delete_url) {
		// 	//绑定删除事件
		// 	this.container.on('click', '#delete_btn', function () {
		// 		$.post({
		// 			url: self.delete_url,
		// 			data: {},
		// 			dataType: 'json',
		// 			complete: function (data) {
		// 				if (data.status == 200) {
		// 					if (self.delete_callback) {
		// 						self.delete_callback.apply(self)
		// 					}
		// 				} else {
		// 					alertify.error('请求异常,状态码:' + data.status);
		// 				}
		// 			}
		// 		});
		// 	});
		// }
		//绑定添加事件
		// this.container.on('click', '#add_btn', function () {
		// 	if ($(this).attr('data-type') == 'page' && $(this).data('url')) {
		// 		//pjax 跳转页面
		// 		let url = '';
		// 		if ($(this).data('url')) {
		// 			url = $(this).data('url');
		// 		}
		// 		console.log(url)
		// 		pjaxInit(('/workshop?key=' + url).replace('key=/', 'key='));
		// 	} else {
		// 		/*if (!self.dialog) {
		// 			self.dialog = {};
		// 		}
		// 		if ($(this).data('url')) {
		// 			self.dialog.url = $(this).data('url');
		// 		}
		// 		if ($(this).data('name')) {
		// 			self.dialog.name = $(this).data('name');
		// 		}
		// 		if ($(this).data('title')) {
		// 			self.dialog.title = $(this).data('title');
		// 		}

		// 		self.addDialog(self.dialog);*/
		// 	}
		// })
	}
}
window.viewMap = [];